#include<stdio.h>
#include<unistd.h>//getpid()/getppid()的头文件
#include<sys/types.h>//定义pid_t类型
#include<stdlib.h>//exit()系统调用

int main()
{
    pid_t id = fork();//创建子进程
    if(id<0)
    {
        perror("fork");//子进程创建失败
        return 2;
    }
    else if(id==0)
    {
        while(1)
        {
            printf("我是子进程！ppid : %d , pid : %d \n",getppid(),getpid());
            sleep(1);
        }
    }
    else 
    {
        while(1)
        {
            printf("我是父进程！ppid : %d , pid : %d \n",getppid(),getpid());
            sleep(3);
        }
    }
    return 0;
}

//int main()
//{
//    pid_t id = fork();//创建子进程
//    if(id<0)
//    {
//        perror("fork");//子进程创建失败
//        return 2;
//    }
//    else if(id==0)
//    {
//        printf("我是子进程！ppid : %d , pid : %d\n",getppid(),getpid());
//        sleep(15);
//    }
//    else 
//    {
//        printf("我是父进程！ppid : %d , pid : %d\n",getppid(),getpid());
//        sleep(10);
//        exit(1);//通过exit()系统调用终止        
//    }
//    return 0;
//}

//int main()
//{
//    pid_t id = fork();//创建子进程
//    if(id<0)
//    {
//        perror("fork");//子进程创建失败
//        return 2;
//    }
//    else if(id==0)
//    {
//        printf("我是子进程！ppid : %d , pid : %d\n",getppid(),getpid());
//        sleep(1);
//        exit(1);//通过exit()系统调用终止
//    }
//    else 
//    {
//        printf("我是父进程！ppid : %d , pid : %d\n",getppid(),getpid());
//        sleep(15);
//    }
//    return 0;
//}
//int main()
//{
//    while(1)
//    {
//        printf("Hello! This is a process! ppid : %d , pid : %d\n",getppid(),getpid());
//        sleep(2);
//    }
//    return 0;
//}
//
//const int num=10;
//int main()
//{
//    int i=0;
//    for(;i<num;i++)
//    {
//        pid_t id=fork();
//        if(id==0)
//        {
//            //子进程
//            while(1)
//            {
//                printf("我是子进程！pid:%d,ppid:%d,ret:%d\n",getpid(),getppid(),id);
//                sleep(1);
//            }
//        }
//        else if(id>0)
//        {
//            //父进程
//            printf("id为%d的子进程被创建\n",id);
//        }
//        else  
//        {
//            //子进程创建失败
//            perror("fork");
//            return 1;
//        }
//        sleep(1);
//
//    }
//    while(1)
//    {
//        printf("我是父进程！pid:%d,ppid:%d\n",getpid(),getppid());
//        sleep(1);
//    }
//    return 0;
//}
//
//int main()
//{
//    printf("我是一个进程！pid:%d,ppid:%d\n",getpid(),getppid());
//
//    pid_t id =  fork();
//    sleep(1);
//    if(id<0)
//    {
//        perror("fork");//创建子进程失败
//        return 1;
//    }
//    else if(id==0)
//    {
//        while(1)
//        {
//            printf("我是子进程！pid:%d,ppid:%d,ret:%d\n",getpid(),getppid(),id);
//            sleep(1);
//        }
//    }
//    else 
//    {
//        while(1)
//        {
//
//            printf("我是父进程！pid:%d,ppid:%d,ret:%d\n",getpid(),getppid(),id);
//            sleep(1);
//        }
//    }
//    return 0;
//}

//int main()
//{
//    printf("我是一个进程！pid:%d,ppid:%d\n",getpid(),getppid());
//
//    fork();
//    sleep(1);
//
//    printf("这是一条消息！pid:%d,ppid:%d\n",getpid(),getppid());
//    sleep(1);
//    return 0;
//}
//


//int main()
//
//{
//    while(1)
//    {
//        printf("This is a process! pid:%d, ppid:%d\n",getpid(),getppid());
//   sleep(1);
//    }
//    return 0;
//}
